package common

//定义h5用到数据结构

//代理第一次充值的配置
type TopUp struct {
	Id      int64 `json:"id"`
	Amount  int64 `json:"amount"`
	CardNum int64 `json:"card_num"`
	Level   int64 `json:"level"`
}

//代理玩家充值关系表h5_agent_player
type AgentPlayer struct {
	Id         int64  `json:"id"`
	PlayerId   int64  `json:"player_id"`
	Remark     string `json:"remark"`
	Nickname   string `json:"nickname"`     //在玩家表(user)里读取
	HeadImgUrl string `json:"head_img_url"` //在玩家表(user)里读取
}

//钻石 h5_card_price
type Card struct {
	Id        int64 `json:"id"`
	Type      int64 `json:"type" valid:"Range(1,5)"`
	Num       int64 `json:"num" valid:"Required"`
	GiveNum   int64 `json:"give_num"`             //搞活动赠送钻石
	Amount    int64 `json:"amount,omitempty"`     //总价,用于pc端展示
	UnitPrice int64 `json:"unit_price,omitempty"` //单价，用于pc端展示
}

//商城商品 store
type Store struct {
	Id        int64 `json:"id"`
	Num       int64 `json:"num"`
	Amount    int64 `json:"amount"`
	Status    int64 `json:"status"`
	ProductId int64 `json:"product_id"`
}

type DiamondCoin struct {
	Id       int64  `json:"id"`
	Diamond  int64  `json:"diamond"`
	Coin     int64  `json:"coin"`
	Title    string `json:"title"`
	SubTitle string `json:"sub_title"`
}

//赠送钻石时看到的列表 h5_give_card
type GiveCard struct {
	Id  int64 `json:"id"`
	Num int64 `json:"num" valid:"Required"`
}

//钻石买卖记录
type CardRecord struct {
	Id         int64 `json:"id"`
	AgentId    int64 `json:"agent_id"`
	PlayerId   int64 `json:"player_id"`
	CardNum    int64 `json:"card_num"` //钻石数量，包括系统赠送的钻石
	Amount     int64 `json:"amount"`
	Type       int64 `json:"type"`     //记录类型,1-买卡，2-代充，3-直充
	PayType    int64 `json:"pay_type"` //支付方式，1-余额支付，2-微信支付，2-支付宝支付
	CreateTime int64 `json:"create_time"`
}

//统计代理名下的玩家充值情况
type StatAgentPlayer struct {
	Uid            int64  `json:"uid"`             //玩家uid
	HeadImgUrl     string `json:"head_img_url"`    //玩家头像
	Nickname       string `json:"nickname"`        //玩家昵称
	TotalCount     int64  `json:"total_count"`     //代充+直充总数
	HandleCount    int64  `json:"handle_count"`    //代充钻石数量
	AutomaticCount int64  `json:"automatic_count"` //直充钻石数量
}

//统计当前代理累计买，累计卖了多少张钻石,剩余钻石数
type StatCard struct {
	RestCard    int64 `json:"rest_card"`    //剩余钻石数
	BuyCard     int64 `json:"buy_card"`     //累计买的钻石数
	SellCard    int64 `json:"sell_card"`    //累计卖的钻石数
	ConsumeCard int64 `json:"consume_card"` //消耗的钻石
}

//统计代理名下的代充玩家总数，直充玩家总数，总共玩家
type StatPlayer struct {
	HandlePlayerCount    int64 `json:"handle_player_count"`
	AutomaticPlayerCount int64 `json:"automatic_player_count"`
	TotalPlayerCount     int64 `json:"total_player_count"`
}

//钻石记录
type ListCardParams struct {
	ListParams
	Type     int64 `json:"type" valid:"Range(0,6)"`
	PlayerId int64 `json:"player_id"`
}

//代理的card与card的记录表, h5_card_cash
type CardCash struct {
	Uid          int64 `json:"uid"`
	CardNum      int64 `json:"card_num"`      //钻石数量
	Amount       int64 `json:"amount"`        //余额
	WithdrawTime int64 `json:"withdraw_time"` //最后一次提现时间
}

//金额流水账,h5_cash_record
type CashRecord struct {
	Id         int64 `json:"id,omitempty"`
	AgentId    int64 `json:"agent_id"`
	UserType   int64 `json:"user_type,omitempty"`
	ChildId    int64 `json:"child_id"`
	CardNum    int64 `json:"card_num"`
	Type       int64 `json:"type,omitempty"`
	Amount     int64 `json:"amount"`
	Month      int64 `json:"month,omitempty"`
	CreateTime int64 `json:"create_time,omitempty"`
	/*----------下面是二级代理或玩家信息------*/
	Nickname   string `json:"nickname"`
	HeadImgUrl string `json:"head_img_url"`
}

type ListCashParams struct {
	ListParams
	Month int64 `json:"month" valid:"Required"`
}

type StatCash struct {
	TotalIncome     int64 `json:"total_income"`     //累计收入
	YesterdayIncome int64 `json:"yesterday_income"` //昨日收入
	TodayIncome     int64 `json:"today_income"`     //今日收入
	Balance         int64 `json:"balance"`          //可提现
}

//代理的银行卡信息, h5_agent_bank
type AgentBank struct {
	Uid        int64  `json:"uid"`
	Name       string `json:"name"` //银行卡持卡人姓名
	BankName   string `json:"bank_name"`
	Province   string `json:"province"`
	City       string `json:"city"`
	CardNum    string `json:"card_num"`
	Branch     string `json:"branch"`
	Mutable    int64  `json:"mutable"` //当月是否可修改，1-是，0-否
	CreateTime int64  `json:"create_time"`
}

//一些设置规则表,h5_rule
type Rule struct {
	Id     int64  `json:"id"`
	Name   string `json:"name"`
	Type   int64  `json:"type"`
	Amount int64  `json:"amount"`
	Scale  int64  `json:"scale"`
	Unit   string `json:"unit"`
}

//支付方式,支付比例
type PayType struct {
	Id           int64  `json:"id"`
	PayType      int64  `json:"pay_type"`
	PlatformType int64  `json:"platform_type"`
	Percent      int64  `json:"percent"`
	Remark       string `json:"remark"`
}

//支持的银行列表
type BankList struct {
	Id   int64  `json:"id"`
	Name string `json:"name"`
}

//提现记录表 h5_withdraw_record
type WithdrawRecord struct {
	Id           int64       `json:"id"`
	AgentId      int64       `json:"agent_id"`
	Amount       int64       `json:"amount"`
	Status       int64       `json:"status"`
	ServerCharge int64       `json:"server_charge"` //手续费
	Tax          int64       `json:"tax"`           //应扣税款
	RealIncome   int64       `json:"real_income"`   //实际收入
	FailReason   string      `json:"fail_reason"`
	CreateTime   int64       `json:"create_time"`
	PayTime      int64       `json:"pay_time"`
	BankInfo     interface{} `json:"bank_info"`
}

//h5订单支付方面
type Order struct {
	Id            int64  `json:"id,omitempty"`
	TransactionId string `json:"transaction_id"` //微信支付订单号
	Uid           int64  `json:"uid,omitempty"`
	AgentId       int64  `json:"agent_id,omitempty"` //代理id,玩家直充时，是在哪个代理里买的
	UserType      int64  `json:"user_type,omitempty"`
	PayType       int64  `json:"pay_type,omitempty"`
	OrderType     int64  `json:"order_type,omitempty"` //订单类型
	Amount        int64  `json:"amount,omitempty"`
	CardNum       int64  `json:"card_num,omitempty"`
	GiveNum       int64  `json:"give_num"` //搞活动时系统赠送的钻石数
	Status        int64  `json:"status,omitempty"`
	OrderTime     int64  `json:"order_time,omitempty"`
	PayTime       int64  `json:"pay_time,omitempty"`
	DeliveryTime  int64  `json:"delivery_time"` //发货时间
	IsFirst       int64  `json:"is_first"`
	Remark        string `json:"remark"`
}

//代理帐号 h5_user
type H5User struct {
	Uid          int64  `json:"uid,omitempty"`
	LoginType    int64  `json:"login_type,omitempty"`
	Pid          int64  `json:"pid,omitempty"` //一级代理与二级代理从属关系
	GameId       int64  `json:"game_id"`       //代理自己的游戏id
	Phone        string `json:"phone"`
	Password     string `json:"password,omitempty"`
	OpenId       string `json:"open_id"`
	Nickname     string `json:"nickname"`     // 用户昵称
	Remark       string `json:"remark"`       //上级代理设置的备注
	Sex          int64  `json:"sex"`          // 用户的性别，值为1时是男性，值为2时是女性，值为0时是未知
	Province     string `json:"province"`     // 用户个人资料填写的省份
	City         string `json:"city"`         // 普通用户个人资料填写的城市
	Country      string `json:"country"`      // 国家，如中国为CN
	HeadImgUrl   string `json:"head_img_url"` // 用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空。若用户更换头像，原有头像URL将失效。
	NameUrl      string `json:"name_url"`     //代理名片二维码
	ShopUrl      string `json:"shop_url"`     //代理店铺二维码
	LoginUrl     string `json:"login_url"`    //代理专属的下载APP的登录url
	AgentNum     int64  `json:"agent_num"`    //一级代理能发展二级代理的名额,每发展一个就减少一个名额
	Level        int64  `json:"level"`        //1-一级代理商,2-二级代理
	GroupId      int64  `json:"group_id"`     //所属大区
	IsPass       int64  `json:"is_pass"`      //是否通过考核,1-是，0-否
	IsWithdraw   int64  `json:"is_withdraw"`  //是否可以提现
	PassTime     int64  `json:"pass_time"`    //考核时间
	Status       int64  `json:"status"`       //0-注册成功，1-输入授权成功，2-绑定手机成功,3-人工审核不通过,4-人工审核通过,5-第一次充值成功，6-正式的代理
	Frozen       int64  `json:"frozen"`
	FrozenReason string `json:"frozen_reason"`
	CreateTime   int64  `json:"create_time,omitempty"`
	AgentTime    int64  `json:"agent_time,omitempty"` //正式成为代理的时间
	LoginTime    int64  `json:"login_time",omitempty` //登录时间

	Identity string `json:"identity"`  //身份证号
	RealName string `json:"real_name"` //真实名字
}

//授权码 h5_auth_code
type AuthCode struct {
	Uid        int64  `json:"uid"` //uid可能为0， 0为系统帐号
	AuthCode   string `json:"auth_code"`
	Level      int64  `json:"level"`
	CreateTime int64  `json:"create_time"`
}

type ListStatParams struct {
	ListParams
	Type    int64   `json:"type" valid:"Range(1,3)"`
	Order   int64   `json:"order"`
	AgentId []int64 `json:"agent_id"`
	Name    string  `json:"name"`
}

//二级代理的信息
type Level2Agent struct {
	Uid            int64  `json:"uid"`
	Nickname       string `json:"nickname"`
	Remark         string `json:"remark"`
	Status         int64  `json:"status"` //代理状态
	HeadImgUrl     string `json:"head_img_url"`
	Phone          string `json:"phone"`
	GameId         int64  `json:"game_id"` //游戏id
	CreateTime     int64  `json:"create_time"`
	PlayerCount    int64  `json:"player_count"`    //玩家数量
	HandleCount    int64  `json:"handle_count"`    //代充钻石数量
	AutomaticCount int64  `json:"automatic_count"` //直充钻石数量
}

type ListH5UserParams struct {
	ListParams
	Name string `json:"name,omitempty"`
}
